package ui.tp3.modelo;

import java.io.Serializable;

public class Coordenada implements Serializable {

	/*********** VARIABLES **********/

	public static final String X = "x";
	public static final String Y = "y";

	private int x;
	private int y;

	/************ GETTERS Y SETTERS **********/

	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;

	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;

	}

	/********** CONSTRUCTORES *******/
	public Coordenada(int i, int j) {
		this.x = i;
		this.y = j;
	}

	public Coordenada() {

	}

	/********* METODOS *********/

	/**
	 * Este metodo se redefinio, para que una cordenada sea igual a otro si solo
	 * si: * el numero de filas es igual en ambas * el numero de columnas es
	 * igual en ambas
	 * 
	 * @param Coordenada
	 *            x
	 * @return boolean
	 */
	boolean equals(Coordenada x) {

		return this.getX() == x.getX() && this.getY() == x.getY();
	}

	/**
	 * Este metodo retorna la diferencia entre la coordenada y la que
	 * es enviada por parametro restando filas con filas y columnas con
	 * columnas respectivamente.
	 * 
	 * @param c
	 * @return int
	 */
	protected int diferenciaConCoord(Coordenada c) {
		return Math.abs(this.getX() - c.getX())
				+ Math.abs(this.getY() - c.getY());

	}

	/**
	 * Retorna un booleano representando si la coordenada es mayor a la 
	 * pasada por parametro.
	 * 
	 * @param c
	 * @return boolean
	 */
	protected boolean mayorA(Coordenada c) {
		return (this.getX() >= c.getX()) && (this.getY() >= c.getY());

	}

	/**
	 * Retorna un booleano representando si la coordenada es mayor a cero.
	 *
	 * @return boolean
	 */
	protected boolean mayorACero(Coordenada c) {
		return (0 <= c.getX()) && (0 <= c.getY());
	}

	public String toString() {
		return "(" + this.x + " , " + this.y + ")";
	}

}
